วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge
UI ของ Event Bridge เปลี่ยนไปมาก จึงทำการเขียนบทความใหม่ ดังนั้นโปรดดูที่บทความนี้
【Update】วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge
ครั้งนี้จะมาแนะนำวิธีตั้งค่ากำหนดการ Stop Instance อัตโนมัติด้วย Amazon EventBridge ต่อจากบทความ วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy และ วิธีเชื่อมโยง Elastic IP (EIP) ไปยัง EC2 Instance
สิ่งที่ต้องมี
ก่อนอื่นต้องทำการติดตั้ง EC2 Instance สามารถดูวิธีการทำได้ที่คำอธิบายและลิงก์ด้านล่างนี้
※ชื่อ Key Pairs และ EC2 Instance ของบทความนี้คือtinnakorn-schedule-stop
※หัวข้อ ❌3. Connect to EC2 by PuTTY ไม่ต้องทำ
※Link : วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy
เมื่อติดตั้ง EC2 Instance เสร็จเรียบร้อยแล้ว ให้ทำการเชื่อมโยง Elastic IP ไปยัง EC2 Instance เพื่อไม่ให้ IP Address เกิดการเปลี่ยนแปลง สามารถทำตามขั้นตอนที่ลิงก์ด้านล่างนี้ได้เลย
วิธีตั้งค่ากำหนดการ Stop EC2 Instance
เราจะสาธิตวิธีตั้งค่ากำหนดการ Stop EC2 Instance ใน Service Amazon EventBridge โดยจะใช้ชื่อว่าtinnakorn-schedule-stop
ซึ่งเป็นชื่อเดียวกับ Instance นั่นเอง
ค้นหา?︎ Amazon EventBridge
เลือกAmazon EventBridge
เมื่อเข้ามาที่ Amazon EventBridge แล้ว มาที่เมนูด้านซ้าย เลือกRules
มาที่หัวข้อ Rules คลิกCreate rule
เมื่อเข้ามาหน้า Create rule แล้ว สามารถดูการตั้งค่านี้เป็นแนวทางได้เลย
การตั้งค่าหัวข้อ Name and description นี้คือ:
» Name:tinnakorn-schedule-stop
» Description - optional:tinnakorn-schedule-stop
การตั้งค่าหัวข้อ Define pattern นี้คือ:
» Build or customize an Event Pattern or set a Schedule to invoke Targets.:⚫ Schedule
» เลือก⚫ Cron expression:
ตามด้วยใส่วันที่และเวลาที่เราต้องการลบ:10 12 * * ? *
【10
= นาที12
= ชั่วโมง (UTC-7) => เวลาประเทศไทยคือ19:10
นาที (+7)】
» เมื่อใส่วันที่และเวลาแล้ว จะมี Next 10 trigger date(s) ปรากฎขึ้นมา เลือก:Local time zone ▼
สามารถศึกษาเรื่อง Cron expression เพิ่มเติมได้ที่ : https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
มาที่หน้า EC2 Instance ของเรา คลิก❐
เพื่อ Copy Instance ID แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก็ได้
การตั้งค่าหัวข้อ Select targets นี้คือ:
Target
» เลือกEC2 StopInstances API call
» วาง Instance ID:i-*****************
⚫ Create a new role for this specific resource:tinnakorn-schedule-stop_Amazon_EventBridge_Invoke_Action
※ตัวอย่างการใส่ชื่อ role
# ชื่อ EC2 Instance ของเรา = "tinnakorn-schedule-stop_" # ชื่อค่าเริ่มต้นของ Role = "Amazon_EventBridge_Invoke_Action_On_EC2_Instance_823471707" # ให้ทำการลบตั้งแต่ "_On_EC2_Instance_823471707" ก็จะได้เป็น "Amazon_EventBridge_Invoke_Action" # การรวมชื่อโดยการนำชื่อ EC2 Instance ของเรากับชื่อ role มารวมกันตามด้านล่างนี้ # "tinnakorn-schedule-stop_" + "Amazon_EventBridge_Invoke_Action" ก็จะได้เป็น "tinnakorn-schedule-stop_Amazon_EventBridge_Invoke_Action"
↓ ตัวอย่างนี้จะใส่ชื่อ role ตามด้านล่างนี้ แต่จริงๆ แล้วไม่ต้องทำแบบนี้ก็ได้ จะใส่ชื่ออะไรก็ได้ที่ทำให้เราจำง่ายที่สุด
tinnakorn-schedule-stop_Amazon_EventBridge_Invoke_Action
เลื่อนลงมาด้านล่างสุด คลิกCreate
เมื่อมาหน้านี้แล้ว ให้คลิกที่ชื่อ Rule ของเรา
จากนั้นตรวจสอบข้อมูลที่เราได้ตั้งค่าไว้ในหน้านี้
กลับมาที่หน้า EC2 Instance ของเรา แล้วสังเกตการเปลี่ยนแปลงของ Instance ตามเวลาที่เราได้ระบุไว้
จะเห็นว่า Instance state เริ่ม Stopping
เมื่อ Instance state เป็น Stopped การ Stop Instance ก็เสร็จสมบูรณ์
ในกรณีที่เราต้องการใช้ Instance นี้อีกครั้ง ก็สามารถ Start Instance ด้วยตัวเองได้ปกติ
คลิกที่Instance state ▼
เลือกStart instance
เมื่อ Instance state เป็น Running ก็จะสามารถใช้งาน Instance ได้ตามปกติ
การตรวจสอบข้อมูลการใช้งานย้อนหลังด้วย CloudTrail
เมื่อเราได้ดำเนินการสิ่งต่างๆ ใน AWS นี้ไปแล้ว เราสามารถเข้ามาตรวจสอบสิ่งที่ดำเนินการย้อนหลังได้ที่ CloudTrail
ค้นหา?︎ CloudTrail
» เลือกCloudTrail
เมื่อเข้ามาที่ CloudTrail แล้ว มาที่เมนูด้านซ้าย เลือกEvent history
มาที่ Event history ในส่วนนี้เราสามารถเลือกดูข้อมูลย้อนหลังที่ดำเนินการไปก่อนหน้านี้ได้
ตัวอย่างนี้จะเข้าไปดูที่StopInstances
เมื่อเข้ามาหน้า StopInstance แล้ว สามารถตรวจสอบข้อมูลการ Stop Instance ได้ว่าเรียบร้อยดีหรือไม่
การลบ Features ที่สร้างใน Services ของ AWS
เมื่อเราสร้างและใช้งาน Features ต่างๆ ใน Services ของ AWS ไปแล้ว เราสามารถลบออกได้ด้วยตัวเองง่ายๆ สามารถทำตามขั้นตอนเหล่านี้ได้เลย
※สิ่งที่จะลบออกคือ:
- Amazon EventBridge
- IAM
- Roles
- Policies
- Instance
- Security Groups
- Key Pairs
การลบ Rule ใน Amazon EventBridge
มาที่หน้า Amazon EventBridge
คลิกที่⚫
คลิกDelete
คลิกDelete
การลบ Roles กับ Policies ใน IAM
※การลบ Roles ใน IAM
เข้ามาที่ Service IAM โดยค้นหา?︎ IAM
» เลือกIAM
จากนั้นเริ่มทำการลบ Features Roles กับ Policies ใน Service IAM ได้เลย
ทำการลบ Roles ตามนี้
① มาที่เมนูด้านซ้าย เลือกRoles
② ค้นหาโดยใส่ชื่อเดียวกับที่เราสร้าง role ไว้?︎ tinnakorn-schedule-stop
+ Enter
③ Check✅
ที่ชื่อของเรา
④ คลิกDelete
คัดลอกชื่อในช่องสีแดงมาวางในช่องด้านล่าง จากนั้นคลิกDelete
※การลบ Policies ใน IAM
ทำการลบ Policies ตามนี้
① มาที่เมนูด้านซ้าย เลือกPolicies
② ค้นหาโดยใส่ชื่อเดียวกับที่เราสร้าง role ไว้?︎ tinnakorn-schedule-stop
+ Enter
③ Check✅
ที่ชื่อของเรา
④ คลิกActions ▼
⑤ เลือกDelete
คัดลอกชื่อในช่องสีแดงมาวางในช่องด้านล่าง จากนั้นคลิกDelete
การลบ Instance, Security Groups, Key Pairs และ EIP ใน EC2
เข้ามาที่ Service EC2 โดยค้นหา?︎ EC2
» เลือกEC2
จากนั้นเริ่มทำการลบ Features Instance, Security Groups และ Key Pairs ใน Service EC2 ได้เลย
※การลบ Instance ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Instance เลือกInstances
มาที่หน้า Instance ของเรา
คลิกInstance state ▼
เลือกTerminate instance
คลิกTerminate
เมื่อ Instance state เปลี่ยนเป็น ⊝Terminated
การ Terminated Instance ก็เสร็จสมบูรณ์
※การลบ Security Groups ใน EC2
ก่อนที่เราจะทำการลบ Security Groups เราต้องทำการ Terminate Instance จนกว่า Instance State เปลี่ยนเป็น ⊝Terminated
จึงจะสามารถลบ Security Groups ได้ เพราะว่าถ้าการ Terminate ไม่เสร็จสมบูรณ์ ก็จะทำให้มีแจ้งเตือน Error และไม่สามารถลบได้นั่นเอง
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกSecurity Groups
ค้นหาชื่อ Security Group ของเรา โดยใส่ชื่อเดียวกับ Instance ของเราลงไป
ตัวอย่างนี้คือ?︎ tinnakorn-schedule-stop
+ Enter ตามด้วย Check✅
ที่ชื่อของเรา
คลิกActions ▼
เลือกDelete security groups
คลิกDelete
※การลบ Key Pairs ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกKey Pairs
ค้นหาชื่อ Key Pairs ของเรา โดยใส่ชื่อเดียวกับ Instance ของเราลงไป
ตัวอย่างนี้คือ?︎ tinnakorn-schedule-stop
+ Enter ตามด้วย Check✅
ที่ชื่อของเรา
คลิกที่Actions ▼
เลือกDelete
พิมพ์คำว่าDelete
ลงไป ตามด้วยคลิกDelete
※การลบ Elastic IP (EIP) ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกElastic IPs
การลบ EIP นี้คือ
» ค้นหาชื่อ Elastic IP addresses ของเรา ตัวอย่างนี้คือ?︎ tinnakorn-schedule-stop
+ Enter
» Check✅
ที่ชื่อของเรา (โดยปกติจะ Check ให้อยู่แล้ว)
» มาที่ด้านขวา คลิกActions ▼
» เลือกRelease Elastic IP addresses
คลิกRelease
สรุป
ในบทความนี้ก็ได้สาธิตวิธีตั้งค่ากำหนดการ Stop Instance อัตโนมัติด้วย Amazon EventBridge เรียบร้อยแล้ว ซึ่งการตั้งค่านี้ จะช่วยเพิ่มความสะดวกสบายในการทำงานให้กับเรามากยิ่งขึ้น เพราะเราสามารถกำหนดวัน เวลา ที่ต้องการ Stop Instance ได้โดยไม่ต้องรอจนกว่าจะถึงวันที่ต้องการ Stop Instance และไม่ต้องมาเสียเวลา Stop Instance ด้วยตัวเอง
ตัวอย่างเช่น ถ้าเราไม่ได้ใช้งานเซิร์ฟเวอร์ Instance ในตอนกลางคืน แต่บางครั้งอาจจะลืม Stop Instance ซึ่งเราสามารถ Stop Instance ด้วยการตั้งค่านี้ได้ตลอดเวลา นอกจากนี้ยังช่วยประหยัดค่าใช้จ่ายให้เรา และทำให้เราสามารถใช้งาน AWS ได้ในราคาที่ถูกลงอีกด้วย
ขอขอบคุณที่มา : EC2インスタンスのスケジュール起動がお手軽に実現できるようになっていた!
บทความที่เกี่ยวข้อง
- วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy
- https://dev.classmethod.jp/articles/how-to-link-eip-to-ec2-instance/
- วิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge
- วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
- การ Shutdown ระบบปฏิบัติการ, Terminate, Stop, Restart ของ EC2